2
תגובות

שאלה על מסד נתונים

פתח pol292 ,
יש לי שלוש טבלאות במסד נתונים
1.שומרת פרמטרים שכל הזמן יכולים (נשמר כתא במסד הנתונים) ולצורך הוספת נתון חדש.
2. שומרת נתונים אודות הפרמטרים האלו כגון : שם,אינדקס,שייכות לקבוצה,מידה וטיפ.
3.שומרת את כל הנתונים שנמצאים בטבלה .

עכשיו הבעיה מתחילה כשאני צריך לעשות שליפה של נתונים.
כידי לחסוך שליפות ועבודה מיותרת עם מערכים אני מבצע את השליפה הבאה:
SELECT gname,about,name,mida,tip FROM nbg, nbpi WHERE nbg.group = nbpi.group ORDER BY nbg.group ASC , nbpi.idx ASC


שנותנת לי את הנתונים מטבלה 1 ו 3, ואני מכניס הכל למערך בעזרת הפונקציה readAll בYII FRAMEWORK.
משקורה שיש מערך שמכיל את התוכן הרצוי משני טבלאות.

ואז אני שולף מטבלה נוספת כל משלא מאושר:
"SELECT * FROM `nbp` WHERE `allow` = 0

זה יוצר לי מערך של כל התוכן הלא מאושר.

עכשיו אני צריך לעבור על שני המערכים ולהציג את התוכן הזזה בשנהם איך אפשר לעשות דבר כזה כי בנתיים לא הצלחתי לעשות את זה.

הקוד:

$sql = "SELECT gname,about,name,mida,tip FROM nbg, nbpi WHERE nbg.group = nbpi.group ORDER BY nbg.group ASC , nbpi.idx ASC";
           
            $command = $connection->createCommand($sql);
           
            $dataReader=$command->query();
           
            $group = $dataReader->readAll();
           
            $sql = "SELECT * FROM `nbp` WHERE `allow` = 1";
           
            $command->setText($sql);
           
            $dataReader=$command->query();
           
            $k = $dataReader->readAll();
           
            $form = null;
            #כאן הבעיה מתחילה
           foreach ( $k as $arr ) {
                foreach ( $arr as $key => $row ) {
                   

                    if (($key != "allow") && ($key != "id")) {
                       
                        #$form = $form ."<div class=\"row\">". $key .": ". $group[$key]["name"] ."מידה: ". $group[$key]["mida"] ."!: ". $group[$key]["tip"] ."</div>";
                       
                    }
                   
                }
            }


דוגמה למערכים:
מערך K:
Array (
  [0] => Array ( [id] => 5 [allow] => 1 [נ1] => das [נ2] => dsa [נ3] => sad [מ1] => da [X] => das [hte] => sad [pol] => )
  [1] => Array ( [id] => 6 [allow] => 1 [נ1] => dasdas [נ2] => dasd [נ3] => das [מ1] => das [X] => ads [hte] => [pol] => )
  [2] => Array ( [id] => 7 [allow] => 1 [נ1] => dasdas [נ2] => dasd [נ3] => das [מ1] => das [X] => ads [hte] => [pol] => )
 )


מערך GROUP:
Array (
  [0] => Array ( [gname] => ניסיון [about] => ניסיון [name] => נ1 [mida] => [tip] => x )
  [1] => Array ( [gname] => ניסיון [about] => ניסיון [name] => נ2 [mida] => [tip] => x )
  [2] => Array ( [gname] => ניסיון [about] => ניסיון [name] => נ3 [mida] => [tip] => x )
  [3] => Array ( [gname] => ניסיון [about] => ניסיון [name] => מ1 [mida] => [tip] => x )
  [4] => Array ( [gname] => ניסיון 2 [about] => ניסיון2 [name] => X [mida] => [tip] => x )
  [5] => Array ( [gname] => ניסיון 2 [about] => ניסיון2 [name] => hte [mida] => [tip] => x )
  [6] => Array ( [gname] => ניסיון3 [about] => ניסיון3 [name] => pol [mida] => pol [tip] => pol )
 )

2 תשובות

avatar ענה intval ב 18 לפברואר 2012 #

חוץ מהמשפט הראשון בשאלה "יש לי שלושה טבלאות" לא הבנתי שום דבר.
יעזור עם תקרא את השאלה, תוסיף סימני פיסוק, מילים חסרות וכאלה.

+ עוד יותר יעזור לך אם תלמד להישתמש בדרך המומלצת לעבוד עם מסדי נתונים ב YII
http://www.yiiframework.com/doc/guide/1.1/he/database.overview

----------------
אם כל מה שאתה רוצה לעשות זה לשלוף מטבלה 1 ו3 את כל מה שכן אושר לפרסום - תוסיף גם את הטבלה השניה לשליפה ותוסיף לשליפה תנאי של where

$sql = "SELECT gname,about,name,mida,tip FROM nbg, nbpi, Permissions_table WHERE nbg.group = nbpi.group AND Permissions_table.id = SOMETHING AND Permission_table.allow = 1 ORDER BY nbg.group ASC , nbpi.idx ASC";


.. תעשה לעצמך טובה , תתחיל לתת לדברים שמות מובנים. לעמודות, לטבלאות, למשתנים.
אף אחד יותר לא הולך לקרוא את הקוד שלך עם nbp, nbg, nbgi, nblapi, x1, y4, j6, keym

avatar ענה pol292 ב 18 לפברואר 2012 #

אוקיי תודה על ההצעה.
ומשקורה אצלי במערכת, זה דבר כזה:
מנהל האתר יכול להכניס פרמטרים חדשים למסד נתונים דרך הטופס, והפרמטרים האלו נוספים לטופס חדש.
הפרמטרים נחלקים לקבוצות, והקבוצות נשמרות בטבלה אחרת בשם groups .
כשאני רוצה לראות הוספה של משתמשים, ולדעת אם משהם הוסיפו אושר או לא, אני רוצה שיוצג שם של הקבוצה שהפרמטרים שייכים אלה, ולשלוף את כל הפרמטרים ואת הפרטים שלהם.
parameter_info שומר מידע על הפרמטרים
וDATA - זה טבלה שכל התאים שלה הם הפרמטרים האלו וכאן נשמר מאגר הנתונים שצריך להבדק.